﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace tiDE.API
{
    [Serializable]
    public class Project
    {
        public string Name;
        public List<string> Files; // Relative from project file (e.g. Test.asm or /Page00/Test.asm or ../Test.asm)
        public List<string> Dependencies;
        public string Type; // 8xp, 8xu, 8xk, DCS7, Ion, Mirage, KOSProgram, etc
        public List<string> SupportedModels; // 83Plus, 84Plus, Nspire, etc (Used for emulation)
        public string EmulatingModel; // The model the user has choosen to use in the emulator
        //public Guid ManagingAddIn; // The guid of the add-in that handles this kind of project (is this the best way to do it?)
        // Filetype will be used to determine compiler
        public string RootDirectory;
        public string IconFile;
        public object Tag; // Tag, used by add-ins and internally to store data specific to the project type
        public string Packer;

        public Project(string Name, string Type, List<string> Files, string Packer,
            List<string> Dependencies, List<string> Models, string EmulatedModel, string RootDirectory)
        {
            this.Name = Name;
            this.Type = Type;
            this.Files = Files;
            this.Dependencies = Dependencies;
            this.SupportedModels = Models;
            this.EmulatingModel = EmulatedModel;
            this.RootDirectory = RootDirectory;
            this.Packer = Packer;
        }

        public Project(string Name, string Type, List<string> Files, string Packer,
            List<string> Dependencies, List<string> Models, string EmulatedModel, string RootDirectory, string IconFile)
        {
            this.Name = Name;
            this.Type = Type;
            this.Files = Files;
            this.Dependencies = Dependencies;
            this.SupportedModels = Models;
            this.EmulatingModel = EmulatedModel;
            this.RootDirectory = RootDirectory;
            this.IconFile = IconFile;
            this.Packer = Packer;
        }
    }

    public class BuiltInModels
    {
        public static string TI73 = "73";
        //public static string TI83 = "83"; // Supported?
        public static string TI83Plus = "83P";
        public static string TI83PlusSilverEdition = "83PSE";
        public static string TI84Plus = "84P";
        public static string TI843PlusSilverEdition = "84PSE";
        //public static string TI89 = "89"; // Supported?
        //public static string TI89Titanium = "89T"; // Supported?
        //public static string TINspire = "Nspire"; // Supported?
        //public static string TINspireCAS = "NspireCAS"; // Supported?
    }
}
